package utils

import (
	"sync"

	"github.com/bwmarrin/snowflake"
)

var (
	node *snowflake.Node
	once sync.Once
)

// Init 初始化雪花节点
func InitSnowflake(nodeID int64) error {
	var err error
	once.Do(func() {
		node, err = snowflake.NewNode(nodeID)
	})
	return err
}

// GenerateID 生成雪花ID
func GenerateID() int64 {
	if node == nil {
		// 默认使用节点1，建议在程序启动时调用Init初始化
		InitSnowflake(1)
	}
	return node.Generate().Int64()
}

// GenerateStringID 生成字符串形式的ID
func GenerateStringID() string {
	if node == nil {
		// 默认使用节点1，建议在程序启动时调用Init初始化
		InitSnowflake(1)
	}
	return node.Generate().String()
}
